Zum Hauptinhalt springen

REST APIs ansprechen

Eine REST API (Representational State Transfer) ist die heute übliche Methode wie Softwaresysteme miteinander kommunizieren. Wenn ein ERP-System, ein CRM, ein Bezahldienst oder ein Cloudtool eine Schnittstelle anbietet, ist es fast immer eine REST API. In 42°OS sprichst du REST APIs über den Post Agent an.


Das Grundprinzip

Eine REST API funktioniert wie ein Gespräch nach festen Regeln:

  • Du schickst eine Anfrage (Request) an eine bestimmte URL
  • Die URL identifiziert eine Ressource: https://api.example.com/kunden/42
  • Die HTTP-Methode bestimmt was du tun willst
  • Du bekommst eine Antwort (Response) mit einem Statuscode und meistens einem JSON-Body zurück

HTTP-Methoden

MethodeBedeutungBeispiel
GETDaten abrufenKunden-Datensatz lesen
POSTNeuen Datensatz anlegenBestellung erstellen
PUTDatensatz vollständig ersetzenKundendaten aktualisieren
PATCHDatensatz teilweise aktualisierenNur Status ändern
DELETEDatensatz löschenBestellung stornieren

HTTP-Statuscodes

Die Antwort enthält immer einen dreistelligen Statuscode:

BereichBedeutungBeispiele
2xxErfolg200 OK, 201 Created, 204 No Content
3xxWeiterleitung301 Moved Permanently
4xxFehler auf deiner Seite400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5xxFehler auf der Gegenseite500 Internal Server Error, 503 Service Unavailable

Ein Workflow sollte auf den Statuscode reagieren — ein 401 bedeutet Authentifizierungsproblem, ein 404 bedeutet die Ressource existiert nicht, ein 500 ist ein temporäres Problem beim Zielsystem.


Authentifizierungsverfahren

Die meisten APIs erfordern eine Form der Authentifizierung. Die gängigsten Verfahren:

API Key im Header

Einfachstes Verfahren. Ein geheimer Schlüssel wird bei jeder Anfrage im Header mitgeschickt:

{
"post_url": "https://api.example.com/v1/daten",
"method": "get",
"headers": {
"X-API-Key": "{% credential mein_api_key %}"
}
}

Der tatsächliche Schlüssel wird im Credential-Store hinterlegt und per {% credential name %} eingebunden — er erscheint nie im Klartext in der Konfiguration.

Bearer Token (OAuth 2.0)

Verbreitet bei modernen APIs (Microsoft, Google, Salesforce, ...). Ein Token wird im Authorization-Header übermittelt:

{
"headers": {
"Authorization": "Bearer {% credential oauth_token %}"
}
}

Bei OAuth 2.0 hat das Token eine begrenzte Gültigkeit. Je nach API muss ein separater Workflow das Token regelmäßig erneuern (Token Refresh) und im Credential-Store aktualisieren.

Basic Auth

Benutzername und Passwort werden Base64-kodiert im Header übermittelt. Heute selten bei modernen APIs, noch anzutreffen bei älteren Systemen:

{
"headers": {
"Authorization": "Basic {% credential basic_auth_encoded %}"
}
}

Der Credential-Eintrag enthält den bereits Base64-kodierten String benutzername:passwort.

API Key als Query-Parameter

Manche älteren APIs erwarten den Schlüssel in der URL:

{
"post_url": "https://api.example.com/daten?api_key={% credential api_key %}&format=json",
"method": "get"
}

Der Post Agent in 42°OS

Der Post Agent übernimmt alle HTTP-Anfragen. Kernkonfiguration:

{
"post_url": "https://api.example.com/v1/bestellungen",
"method": "post",
"content_type": "json",
"payload": {
"kunden_id": "{{ kunden_id }}",
"artikel": "{{ artikel }}",
"menge": "{{ menge }}"
},
"headers": {
"Authorization": "Bearer {% credential api_token %}"
},
"emit_messages": true
}

Wichtige Optionen:

OptionBedeutung
post_urlZiel-URL, Liquid-Templates möglich
methodget, post, put, patch, delete
content_typejson, form, xml oder MIME-Typ
payloadRequest-Body oder Query-Parameter bei GET
headersZusätzliche HTTP-Header
emit_messagesAntwort als Nachricht weitergeben
output_modeclean (nur Antwort) oder merge (Antwort + Eingangsnachricht)

Antwort verarbeiten

Wenn emit_messages: true gesetzt ist, gibt der Agent eine Nachricht mit drei Feldern aus:

{
"status": 200,
"headers": {
"Content-Type": "application/json"
},
"body": "{\"id\": \"ORD-12345\", \"status\": \"created\"}"
}

body ist ein String — für die Weiterverarbeitung muss er per JSON Parse Agent in ein Objekt umgewandelt werden.

GET-Anfrage mit Parametern

Bei GET werden Parameter als Query-String an die URL angehängt:

{
"post_url": "https://api.example.com/v1/kunden",
"method": "get",
"payload": {
"status": "aktiv",
"limit": "50",
"since": "{{ seit_datum }}"
},
"headers": {
"Authorization": "Bearer {% credential api_token %}"
},
"emit_messages": true
}

Ergibt die URL: https://api.example.com/v1/kunden?status=aktiv&limit=50&since=2026-01-01


Dynamische URLs mit Liquid

Die post_url unterstützt Liquid-Ausdrücke — hilfreich wenn die ID einer Ressource Teil der URL ist:

{
"post_url": "https://api.example.com/v1/kunden/{{ kunden_id }}/bestellungen",
"method": "get"
}

Fehlerbehandlung

Ein häufiges Muster: nach dem Post Agent einen Switch Agent einsetzen der auf den Statuscode reagiert:

Post Agent

Switch Agent: status == 200 → weiterverarbeiten
status == 401 → Fehler-Workflow (Token abgelaufen?)
status == 404 → Ressource nicht gefunden
status >= 500 → Retry oder Benachrichtigung

Sicherheit

Alle Credentials — API Keys, Tokens, Passwörter — gehören in den Credential-Store der Plattform, nicht direkt in die Agent-Konfiguration. Nur der Name des Credential-Eintrags erscheint in der Konfiguration, der Wert selbst ist verschlüsselt gespeichert.

Ausschließlich HTTPS-URLs verwenden. HTTP-Verbindungen übertragen Credentials unverschlüsselt.